package jianzhi;

/**
 * description:
 * author:zt
 * date:2021-10-14
 */

/**
 * 符合下列属性的数组 arr 称为 山峰数组（山脉数组） ：
 *
 * arr.length >= 3
 * 存在 i（0 < i< arr.length - 1）使得：
 * arr[0] < arr[1] < ... arr[i-1] < arr[i]
 * arr[i] > arr[i+1] > ... > arr[arr.length - 1]
 * 给定由整数组成的山峰数组 arr ，返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i，即山峰顶部。
 */
public class jianzhi069 {
    public int peakIndexInMountainArray(int[] arr) {
        int l = 0, r = arr.length-2; //因为是和arr[i+1]相比，要防止越界
        while (l < r){
            int mid =  (l + r) >> 1;
            if (arr[mid] > arr[mid+1]) r = mid;
            else l = mid + 1;
        }
        return r;
    }
}
